package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 学生代码提交对象 student_code_submissions
 * 
 * @author ruoyi
 * @date 2025-08-15
 */
public class StudentCodeSubmissions extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 提交ID */
    private Long submissionId;

    /** 学生ID */
    @Excel(name = "学生ID")
    private Long studentId;

    /** OJ题目ID */
    @Excel(name = "OJ题目ID")
    private Long ojProblemId;

    /** 开课ID */
    @Excel(name = "开课ID")
    private Long offeringId;

    /** 代码内容 */
    @Excel(name = "代码内容")
    private String codeContent;

    /** 编程语言 */
    @Excel(name = "编程语言")
    private String programmingLanguage;

    /** 文件名 */
    @Excel(name = "文件名")
    private String fileName;

    /** 提交时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "提交时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date submissionTime;

    /** 编译状态 */
    @Excel(name = "编译状态")
    private String compileStatus;

    /** 编译信息 */
    @Excel(name = "编译信息")
    private String compileMessage;

    /** 执行状态 */
    @Excel(name = "执行状态")
    private String executionStatus;

    /** 最终得分 */
    @Excel(name = "最终得分")
    private BigDecimal finalScore;

    public void setSubmissionId(Long submissionId) 
    {
        this.submissionId = submissionId;
    }

    public Long getSubmissionId() 
    {
        return submissionId;
    }

    public void setStudentId(Long studentId) 
    {
        this.studentId = studentId;
    }

    public Long getStudentId() 
    {
        return studentId;
    }

    public void setOjProblemId(Long ojProblemId) 
    {
        this.ojProblemId = ojProblemId;
    }

    public Long getOjProblemId() 
    {
        return ojProblemId;
    }

    public void setOfferingId(Long offeringId) 
    {
        this.offeringId = offeringId;
    }

    public Long getOfferingId() 
    {
        return offeringId;
    }

    public void setCodeContent(String codeContent) 
    {
        this.codeContent = codeContent;
    }

    public String getCodeContent() 
    {
        return codeContent;
    }

    public void setProgrammingLanguage(String programmingLanguage) 
    {
        this.programmingLanguage = programmingLanguage;
    }

    public String getProgrammingLanguage() 
    {
        return programmingLanguage;
    }

    public void setFileName(String fileName) 
    {
        this.fileName = fileName;
    }

    public String getFileName() 
    {
        return fileName;
    }

    public void setSubmissionTime(Date submissionTime) 
    {
        this.submissionTime = submissionTime;
    }

    public Date getSubmissionTime() 
    {
        return submissionTime;
    }

    public void setCompileStatus(String compileStatus) 
    {
        this.compileStatus = compileStatus;
    }

    public String getCompileStatus() 
    {
        return compileStatus;
    }

    public void setCompileMessage(String compileMessage) 
    {
        this.compileMessage = compileMessage;
    }

    public String getCompileMessage() 
    {
        return compileMessage;
    }

    public void setExecutionStatus(String executionStatus) 
    {
        this.executionStatus = executionStatus;
    }

    public String getExecutionStatus() 
    {
        return executionStatus;
    }

    public void setFinalScore(BigDecimal finalScore) 
    {
        this.finalScore = finalScore;
    }

    public BigDecimal getFinalScore() 
    {
        return finalScore;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("submissionId", getSubmissionId())
            .append("studentId", getStudentId())
            .append("ojProblemId", getOjProblemId())
            .append("offeringId", getOfferingId())
            .append("codeContent", getCodeContent())
            .append("programmingLanguage", getProgrammingLanguage())
            .append("fileName", getFileName())
            .append("submissionTime", getSubmissionTime())
            .append("compileStatus", getCompileStatus())
            .append("compileMessage", getCompileMessage())
            .append("executionStatus", getExecutionStatus())
            .append("finalScore", getFinalScore())
            .toString();
    }
}
